<?php 
namespace app\index\validate;
use think\Validate;

class Notice extends Validate {

    // 规则
    protected $rule = [
        // 优先级2
        'title|标题' => 'require|max:25',
        // ['title', 'require|max:25', '请填写标题|标题不能超过25个字']
        'content'  => 'require|max:500',
        'nt_id'    => 'require',
        'status'   => 'checkStatus',
        'captcha'  => 'require|captcha', // 验证码 或手动验证 captcha_check()

        // // 格式验证
        // 'title' => 'require', // 必须
        // 'title' => 'number', // 数字
        // 'title' => 'float', // 浮点数
        // 'title' => 'boolean', // 是否为true或false
        // 'title' => 'email', // 邮箱
        // 'title' => 'array', // 数组
        // 'title' => 'accepted', // 是否为yes on 或1
        // 'title' => 'date', // 时间，strtotime后
        // 'title' => 'alpha', // 是否为字母
        // 'title' => 'alphaNum', // 字母和数字
        // 'title' => 'alphaDash', // 字母数字和 _ - 
        // 'title' => 'chs', // 纯汉字
        // 'title' => 'chsAlpha', // 汉字和字母
        // 'title' => 'chaAlphaNum', // 汉字字母数字 _ -
        // 'title' => 'activeUrl', // 域名或ip
        // 'title' => 'url', // url地址
        // 'title' => 'ip', // ip地址
        // 'title' => 'dateFormat:y-m-d', // 指定格式的日期
        // // 长度与区间
        // 'title' => 'in:1,2,3',
        // 'title' => 'notIn:1,2,3',
        // 'title' => 'between:1,10',
        // 'title' => 'notBetween:1,10',
        // 'title' => 'length:10', // 或者 length:1,10，可以为数组数量，资源大小
        // 'title' => 'max:10', // 同上
        // 'title' => 'min:10', // 同上
        // 'title' => 'after:2016-03-08', 
        // 'title' => 'before:2016-03-08',
        // 'title' => 'expire:2016-03-08,2016-04-23', // 是否在有效期之内
        // 'title' => 'allowIp:127.0.0.1,127.0.0.2', // 验证ip范围
        // 'title' => 'denyIp:127.0.0.3', // 是否禁止访问
        // // 比较类验证 支持与其他字段相比较
        // 'password' => 'confirm:password_confirm', // 验证两个字段是否匹配。password和password_confirm互相验证不用特指。
        // 'title' => 'different:content', // 验证两个字段是否不同
        // 'title' => 'eq:10', // 或者 = 或者 same
        // 'title' => 'egt:10', // 或者 >=
        // 'title' => 'gt:10', // 或者 >
        // 'title' => 'elt:10', // 或者 <=
        // 'title' => 'lt:10', // 或者 < 
        // // filter
        // 'ip' => 'filter:validate_ip',
        // // 正则，建议使用数组
        // 'zip' => ['regex'=>'one_num'],
        // // 上传验证
        // 'photos' => 'file',
        // 'image'  => 'image:300,300,jpg', // 是否为图片，后面参数为图片限制
        // 'opaImg' => 'fileExt:jpg', // 验证后缀
        // 'img' => 'fileMime:img/jpeg', // 文件类型
        // 'longImg' => 'fileSize:42800', // 文件大小
        // // 行为
        // 'behavior' => 'behavior:', // ???
        // // 其他
        // 'mobile' => 'unique:user,mobile,10,name', // 验证mobile是否在表user中mobile字段唯一，排除主键为10，排除主键值
    ];

    // 错误文字
    protected $message = [
        // 优先级1
        // 'title.require' => '请填写标题',
        // 'title.require' => '{%title_require}',
        'title.max' => '{%title}不能超过25个字'
    ];

    // 预先定义正则表达式
    protected $regex = [
        'one_num' => '\d'
    ];

    protected function checkStatus($value, $rule, $data, $key, $desc) {
        return $value == 'on' || $value == 'off';
    }

    // 默认错误信息替代文字，
    protected $field = [
        'title'   => '标题', // 优先级3
        'content' => '内容',
        'nt_id'   => '分类ID',
        'status'  => '状态'
    ];

    protected $scene = [
        'edit' => ['content'=>'token'] // 自定义场景名+验证字段数组
    ];

}